#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/timerfd.h>
#include <cstdint>


int main(){
    // 创建一个定时器
    int timefd = timerfd_create(CLOCK_MONOTONIC, 0);
    if(timefd<0){
        perror("timerfd_create error");
        return -1;
    }
    struct itimerspec itime;
    // itime.it_value第一次超时时间  itime.it_value.tv_sec秒
    itime.it_value.tv_sec = 1;
    // itime.it_value.tv_nsec纳秒
    itime.it_value.tv_nsec = 0;
    // 第一次超时后，每次超时的间隔时间
    itime.it_interval.tv_sec = 1;
    itime.it_interval.tv_nsec = 1;
    timerfd_settime(timefd, 0, &itime, NULL);
    while(1){
        uint64_t times;
        int ret = read(timefd, &times, 8);
        if(ret<0){
            perror("read error");
            return -1;
        }
        printf("超时了，距离上一次超时了%ld次\n",times);
    }
    close(timefd);
    return 0;
}